﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.Cors;
using Upeu.Matricula.Api.Models;
using Upeu.Matricula.Data.Business;
using Upeu.Matricula.Data.Entities;

namespace Upeu.Matricula.Api.Controllers
{
    [EnableCors(origins: "*", headers: "*", methods: "*")]
    public class NotaController : ApiController
    {

        public IEnumerable<NotaModel> Get()
        {

            return NotaBusiness.GetList("").Select(
                t => new NotaModel
                {
                    Id = t.Id,
                    CursoNot = t.CursoNot,
                    Promedio = t.Promedio,
                    FechaI = t.FechaI,
                    StudentId = t.StudentId,
                    StudentModel = new StudentModel
                    {
                        Id = t.Student.Id,
                        CodigoM = t.Student.CodigoM,
                        Nombre = t.Student.Nombre,
                        Apellidos = t.Student.Apellidos,
                        DNI = t.Student.DNI,
                        Direccion = t.Student.Direccion,
                        FechaNac = t.Student.FechaNac,
                    },
                    CursoId = t.CursoId,
                    CursoModel = new CursoModel
                    {
                        CursoId = t.CursoId,
                        Nombrec = t.Curso.Nombrec,
                        Profesor = t.Curso.Profesor,
                        Horasc = t.Curso.Horasc,
                        Creditos = t.Curso.Creditos,
                        Costo_curso = t.Curso.Nombrec,
                        Duracion_curso = t.Curso.Duracion_curso,
                        Observaciones = t.Curso.Observaciones,
                    },
                });
        }


        public NotaModel Get(Guid id)
        {
            Nota t = NotaBusiness.GetById(id);
            return new NotaModel
            {
                Id = t.Id,
                CursoNot = t.CursoNot,
                Promedio = t.Promedio,
                FechaI = t.FechaI,
                StudentId = t.StudentId,
                CursoId = t.CursoId,
            };
        }


        public NotaModel Post([FromBody]NotaModel model)
        {
            Nota t = NotaBusiness.Create(new Nota
            {
                
                CursoNot = model.CursoNot,
                Promedio = model.Promedio,
                FechaI = model.FechaI,
                StudentId = model.StudentId,
                CursoId = model.CursoId,
            });
            return new NotaModel
            {
                Id = t.Id,
                CursoNot = t.CursoNot,
                Promedio = t.Promedio,
                FechaI = t.FechaI,
                StudentId = t.StudentId,
                StudentModel = new StudentModel
                {
                    Id = t.Student.Id,
                    CodigoM = t.Student.CodigoM,
                    Nombre = t.Student.Nombre,
                    Apellidos = t.Student.Apellidos,
                    DNI = t.Student.DNI,
                    Direccion = t.Student.Direccion,
                    FechaNac = t.Student.FechaNac,
                },
                CursoId = t.CursoId,
                CursoModel = new CursoModel
                {
                    CursoId = t.Curso.CursoId,
                    Nombrec = t.Curso.Nombrec,
                    Profesor = t.Curso.Profesor,
                    Horasc = t.Curso.Horasc,
                    Creditos = t.Curso.Creditos,
                    Costo_curso = t.Curso.Nombrec,
                    Duracion_curso = t.Curso.Duracion_curso,
                    Observaciones = t.Curso.Observaciones,
                },
            };
        }

        public NotaModel Put(Guid id, [FromBody]NotaModel model)
        {
            Nota t = NotaBusiness.Update(new Nota
            {
                Id = id,
                CursoNot = model.CursoNot,
                Promedio = model.Promedio,
                FechaI = model.FechaI,
                StudentId = model.StudentId,
                CursoId = model.CursoId,
            });

            return new NotaModel
            {
                Id = t.Id,
                CursoNot = t.CursoNot,
                Promedio = t.Promedio,
                FechaI = t.FechaI,

                StudentId = t.StudentId,
                StudentModel = new StudentModel
                {
                    Id = t.Student.Id,
                    CodigoM = t.Student.CodigoM,
                    Nombre = t.Student.Nombre,
                    Apellidos = t.Student.Apellidos,
                    DNI = t.Student.DNI,
                    Direccion = t.Student.Direccion,
                    FechaNac = t.Student.FechaNac,
                },

                CursoId = t.CursoId,
                CursoModel = new CursoModel
                {
                    CursoId = t.Curso.CursoId,
                    Nombrec = t.Curso.Nombrec,
                    Profesor = t.Curso.Profesor,
                    Horasc = t.Curso.Horasc,
                    Creditos = t.Curso.Creditos,
                    Costo_curso = t.Curso.Nombrec,
                    Duracion_curso = t.Curso.Duracion_curso,
                    Observaciones = t.Curso.Observaciones,
                },
            };
        }


        public void Delete(Guid id)
        {
            NotaBusiness.Delete(id);
        }
    }
}